{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "intro",
   "metadata": {},
   "source": [
    "# Tύποι δεδομένων και λειτουργίες στην Python"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "concepto",
   "metadata": {},
   "source": [
    "## Βήμα 1: Τύποι δεδομένων\n",
    "Οι πρωτόγονοι τύποι είναι τα βασικά στοιχεία με τα οποία μπορούμε να δουλέψουμε στην Python. Είναι οι απλούστεροι τύποι δεδομένων που παρέχονται από τη γλώσσα. Ας δούμε κάθε ένα από αυτά ένα προς ένα:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "tipos-lista",
   "metadata": {},
   "source": [
    "- **Integers (`int`)**: Ακέραιοι αριθμοί χωρίς δεκαδικά ψηφία. Μπορούν να είναι θετικοί, αρνητικοί ή μηδέν.\n",
    "- **Floating-point numbers (`float`)**: Αριθμοί που έχουν υποδιαστολή.\n",
    "- **Strings (`str`)**: Τιμές κειμένου που περικλείονται είτε σε μονά εισαγωγικά (```) ή σε διπλά εισαγωγικά (`\"`).\n",
    "- **Booleans (`bool`)**: Λογικές τιμές, είτε \"True\" ή \"False\"."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "enteros",
   "metadata": {},
   "source": [
    "## Βήμα 2: Ακέραιοι - Integers (`int`)\n",
    "Οι ακέραιοι είναι αριθμοί που δεν έχουν δεκαδικό μέρος. Είναι ο πιο βασικός αριθμητικός τύπος.\n",
    "### Παραδείγματα:\n",
    "- Το \"5\" είναι ακέραιος αριθμός.\n",
    "- Το `-3` είναι αρνητικός ακέραιος.\n",
    "- Το `0` είναι επίσης ένας ακέραιος, ο οποίος δεν αντιπροσωπεύει τίποτα.\n",
    "Οι ακέραιοι αριθμοί χρησιμοποιούνται όταν χρειάζεται να αναπαραστήσετε ακέραιους αριθμούς, όπως μέτρηση στοιχείων, μέτρηση αποστάσεων ή οτιδήποτε δεν απαιτεί δεκαδικούς.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-enteros",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Πράξεις με ακεραίους\n",
    "num1 = 10\n",
    "num2 = 3\n",
    "\n",
    "# πρόσθεση\n",
    "result_addition = num1 + num2  # Adding two integers\n",
    "print('Addition:', result_addition)  # Output: 13\n",
    "\n",
    "# Αφαίρεση\n",
    "result_subtraction = num1 - num2  # Subtracting num2 from num1\n",
    "print('Subtraction:', result_subtraction)  # Output: 7\n",
    "\n",
    "# Πολλαπλασιασμός\n",
    "result_multiplication = num1 * num2  # Multiplying two integers\n",
    "print('Multiplication:', result_multiplication)  # Output: 30\n",
    "\n",
    "# Διαίρεση\n",
    "result_division = num1 / num2  # Dividing num1 by num2\n",
    "print('Division:', result_division)  # Output: 3.3333"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "flotantes",
   "metadata": {},
   "source": [
    "## Βήμα 3: Αριθμοί κινητής υποδιαστολής- Floating-Point Numbers (`float`)\n",
    "Οι αριθμοί τύπου float αντιπροσωπεύουν αριθμούς που περιέχουν υποδιαστολή. Χρησιμοποιούνται για την αναπαράσταση πραγματικών αριθμών που απαιτούν ακρίβεια πέρα ​​από ακέραιους αριθμούς.\n",
    "### Παραδείγματα:\n",
    "- Το \"3.14\" είναι ένας float που αντιπροσωπεύει το Pi.\n",
    "- Το \"-2,5\" είναι αρνητικό float.\n",
    "- Το `0,0` είναι επίσης ένας float που αντιπροσωπεύει το μηδέν με δεκαδική ακρίβεια.\n",
    "Οι float είναι χρήσιμοι όταν ασχολούμαστε με μετρήσεις, αποστάσεις, θερμοκρασίες ή οικονομικούς υπολογισμούς που απαιτούν δεκαδικούς αριθμούς.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-flotantes",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Πράξεις με Float\n",
    "num3 = 3.14\n",
    "num4 = 2.5\n",
    "\n",
    "# Πρόσθεση\n",
    "result_addition_float = num3 + num4  # Adding two float numbers\n",
    "print('Addition (float):', result_addition_float)  # Output: 5.64\n",
    "\n",
    "# Αφαίρεση\n",
    "result_subtraction_float = num3 - num4  # Subtracting num4 from num3\n",
    "print('Subtraction (float):', result_subtraction_float)  # Output: 0.64\n",
    "\n",
    "# Πολλαπλασιασμός\n",
    "result_multiplication_float = num3 * num4  # Multiplying two float numbers\n",
    "print('Multiplication (float):', result_multiplication_float)  # Output: 7.85\n",
    "\n",
    "# Διαίρεση\n",
    "result_division_float = num3 / num4  # Dividing num3 by num4\n",
    "print('Division (float):', result_division_float)  # Output: 1.256"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cadenas",
   "metadata": {},
   "source": [
    "## Βήμα 4: Συμβολοσειρά - Strings (`str`)\n",
    "Οι συμβολοσειρές αντιπροσωπεύουν δεδομένα κειμένου. Χαρακτήρες που περικλείονται σε εισαγωγικά, είτε απλά είτε διπλά, θεωρούνται συμβολοσειρές.\n",
    "### Παραδείγματα:\n",
    "- Το \"Γεια\" είναι μία συμβολοσειρά.\n",
    "- Το \"Python\" είναι μία συμβολοσειρά.\n",
    "- Το \"Hi!\" είναι επίσης μια συμβολοσειρά, χρησιμοποιώντας διπλά εισαγωγικά.\n",
    "Οι συμβολοσειρές είναι χρήσιμες όταν χρειάζεται να αναπαραστήσετε κείμενο, όπως ονόματα, διευθύνσεις, μηνύματα και άλλα."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-cadenas",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Πράξεις με σθμβολοσειρές\n",
    "str1 = 'Hello'\n",
    "str2 = 'World'\n",
    "\n",
    "# Concatenation\n",
    "result_concatenation = str1 + ' ' + str2  # Ένωση συμβολοσειρών\n",
    "print('Concatenation:', result_concatenation)  # Output: 'Hello World'\n",
    "\n",
    "# Επανάληψη\n",
    "result_repetition = str1 * 3  # Repeat the string 3 times\n",
    "print('Repetition:', result_repetition)  # Output: 'HelloHelloHello'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "booleanos",
   "metadata": {},
   "source": [
    "## Βήμα 5: Λογικοί τύποι - Booleans (`bool`)\n",
    "Τα Booleans αντιπροσωπεύουν λογικές τιμές. Μπορούν να έχουν μόνο μία από τις δύο τιμές: \"True\" ή \"False\".\n",
    "### Παραδείγματα:\n",
    "- Το \"True\" αντιπροσωπεύει μια τιμή αλήθειας.\n",
    "- Το \"False\" αντιπροσωπεύει μια ψευδή τιμή.\n",
    "Τα Booleans χρησιμοποιούνται σε λογικές πράξεις και συγκρίσεις.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "codigo-booleanos",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Boolean - Πράξεις\n",
    "bool1 = True\n",
    "bool2 = False\n",
    "\n",
    "# Λογικό AND\n",
    "result_and = bool1 and bool2  # True AND False\n",
    "print('AND operation:', result_and)  # Output: False\n",
    "\n",
    "# Λογικό OR\n",
    "result_or = bool1 or bool2  # True OR False\n",
    "print('OR operation:', result_or)  # Output: True\n",
    "\n",
    "# Λογικό NOT\n",
    "result_not = not bool1  # NOT True\n",
    "print('NOT operation:', result_not)  # Output: False"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "operaciones",
   "metadata": {},
   "source": [
    "## Βήμα 6: Λειτουργίες σε Python\n",
    "Τώρα, ας δούμε πώς μπορούμε να εκτελέσουμε λειτουργίες σε αυτούς τους τύπους δεδομένων.\n",
    "### Λειτουργίες με ακέραιους αριθμούς (`int`)\n",
    "Μπορείτε να προσθέσετε, να αφαιρέσετε, να πολλαπλασιάσετε και να διαιρέσετε ακέραιους αριθμούς όπως στα βασικά μαθηματικά.\n",
    "### Λειτουργίες με αριθμούς κινητής υποδιαστολής («float»)\n",
    "Οι floats μπορούν να χρησιμοποιηθούν με τους ίδιους τελεστές με τους ακέραιους. Ωστόσο, όταν διαιρείτε δύο ακέραιους αριθμούς, η Python θα επιστρέψει ένα float (ακόμα και αν το αποτέλεσμα είναι ακέραιος αριθμός).\n",
    "### Λειτουργίες με συμβολοσειρές (`str`)\n",
    "Οι συμβολοσειρές μπορούν να συνδεθούν (συνδυαστούν) χρησιμοποιώντας τον τελεστή `+` ή να επαναληφθούν χρησιμοποιώντας τον τελεστή `*`.\n",
    "### Λειτουργίες με Booleans ('bool')\n",
    "Μπορείτε να συνδυάσετε δυαδικές τιμές χρησιμοποιώντας λογικούς τελεστές όπως «and», «or» και «not»."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicios-operaciones",
   "metadata": {},
   "source": [
    "## Βήμα 7: Ασκήσεις\n",
    "Τώρα είναι η σειρά σας! Ακολουθούν μερικές ασκήσεις για να εξασκηθείτε σε αυτά που έχετε μάθει σχετικά με τις πράξεις με τύπους δεδομένων.\n",
    "Προσπαθήστε να τα λύσετε μόνοι σας."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicio1",
   "metadata": {},
   "source": [
    "### Άσκηση 1: Πρόσθεση\n",
    "Γράψτε ένα πρόγραμμα που να ζητά από τον χρήστη δύο αριθμούς και να τους προσθέτει μαζί.\n",
    "Συμβουλή: Μπορείτε να μετατρέψετε την είσοδο χρήστη σε ακέραιους αριθμούς ή float χρησιμοποιώντας τις συναρτήσεις «int()» ή «float()»."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicio2",
   "metadata": {},
   "source": [
    "### Άσκηση 2: Συνένωση συμβολοσειρών\n",
    "Γράψτε ένα πρόγραμμα που θα ζητά από το χρήστη το όνομα και το επίθετό του και στη συνέχεια εκτυπώνει ένα μήνυμα με το πλήρες όνομά του.\n",
    "Συμβουλή: Χρησιμοποιήστε τη συνένωση συμβολοσειρών (`+`) για να ενώσετε τα δύο ονόματα."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ejercicio3",
   "metadata": {},
   "source": [
    "### Άσκηση 3: Ηλικία σε 5 χρόνια\n",
    "Γράψτε ένα πρόγραμμα που θα ρωτά τον χρήστη για την ηλικία του και θα του λέει πόσο χρονών θα είναι σε 5 χρόνια.\n",
    "Συμβουλή: Μετατρέψτε την ηλικία σε ακέραιο πριν εκτελέσετε τον υπολογισμό."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
